﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using System.Collections.Generic;
using CM.BL.BE;

namespace DECOR.WebApp
{
    public partial class Site : System.Web.UI.MasterPage
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            this.validaLogin();
            //--- tomar usuario de sesión
            CredencialesController.Usuario = (RfcConfigParametersBE)Session["UsuarioWeb"];
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Header.Title = "Crystalis Consulting";
            this.muestraMensajes();

            if (!Page.IsPostBack)
            {
                //WEBDIST
                RfcConfigParametersBE objUsuarioWeb = (RfcConfigParametersBE)Session["UsuarioWeb"];
                if (objUsuarioWeb != null)
                    lblNombreUsuario.Text = objUsuarioWeb.Descripcion; //WEBDIST
                //if (Session["PersonaWeb"] != null)
                //{
                //    PersonaBE objPersona = (PersonaBE)Session["PersonaWeb"];
                //    lblNombreUsuario.Text = (objPersona != null ? objPersona.Descripcion : "");
                //}
                //lblFecha.Text = DateTime.Today.ToLongDateString();
                lblFecha.Text = ParametroBC.fechaLarga(DateTime.Today);
            }

            //WEBDIST
            List<string> lstOpciones;
            if (Session["Opciones"] == null)
            {
                lstOpciones = UsuarioBC.Instance.ObtenerOpcionesPorUsuario();
                Session["Opciones"] = lstOpciones;
            }
            else
                lstOpciones = (List<string>)Session["Opciones"];
            Funciones.GeneraOpcionesMenu(ref Menu1, lstOpciones);
        }

        private void validaLogin()
        {
            if (Session["UsuarioWeb"] == null || Session["UsuarioSAP"] == null)
            {
                Response.Redirect("Login.aspx");
            }
        }

        public void muestraMensajes()
        {
            this.leeSesiones();
            this.actualizaPaneles();
            this.limpiaMensaje();
        }

        private void limpiaMensaje()
        {
            Session.Remove("Mensaje");
        }

        private void actualizaPaneles()
        {
            upMensaje.Update();
            upInformacion.Update();
        }

        private void leeSesiones()
        {
            if (Session["Mensaje"] != null && !Session["Mensaje"].ToString().Equals(""))
            {
                lblMensaje.Text = Session["Mensaje"].ToString().Replace("\\n", "<br />");
                mpeMensaje.Show();
            }
            else
            {
                lblMensaje.Text = "";
                mpeMensaje.Hide();
            }
            //--- leer operación
            if (Session["Operacion"] != null)
            {
                PedidoBE objPedido = null;
                DocReclamoBE objReclamo = null;
                if (Session["tipoDoc"] == null)
                    Session["tipoDoc"] = "P";

                if (((string)Session["tipoDoc"]).Equals("P"))
                    objPedido = (PedidoBE)Session["Pedido"];
                else if (((string)Session["tipoDoc"]).Equals("R"))
                    objReclamo = (DocReclamoBE)Session["DocReclamo"];

                switch (Session["Operacion"].ToString().ToLower())
                {
                    case "crear":
                        if (((string)Session["tipoDoc"]).Equals("P"))
                            lblInformacion.Text = "Creando nuevo doc de ventas.";
                        else if (((string)Session["tipoDoc"]).Equals("R"))
                            lblInformacion.Text = "Creando nuevo reclamo.";
                        break;
                    case "ver":
                        if (((string)Session["tipoDoc"]).Equals("P"))
                            lblInformacion.Text = "Visualizando doc de ventas.";
                        else if (((string)Session["tipoDoc"]).Equals("R"))
                            lblInformacion.Text = "Visualizando el reclamo." + objReclamo.Contactos.VBELN;
                        break;
                    case "editar":
                        if (((string)Session["tipoDoc"]).Equals("P"))
                        {
                            if (objPedido != null)
                            {
                                lblInformacion.Text = "Editando doc de ventas: " + objPedido.NumPedido;
                            }
                            else
                            {
                                lblInformacion.Text = "Error al intentar realizar la operación";
                            }
                        }
                        else if (((string)Session["tipoDoc"]).Equals("R"))
                        {
                            if (objReclamo != null)
                            {
                                lblInformacion.Text = "Editando el reclamo: " + objReclamo.Contactos.VBELN;
                            }
                            else
                            {
                                lblInformacion.Text = "Error al intentar realizar la operación";
                            }
                        }

                        break;
                    case "copiar":

                        if (objPedido != null)
                        {
                            lblInformacion.Text = "Creando nuevo doc de ventas \r\n";
                            lblInformacion.Text += "a partir del doc: " + objPedido.NumPedido;
                        }
                        else
                        {
                            lblInformacion.Text = "Error al intentar realizar la operación";
                        }

                        break;
                    default:
                        lblInformacion.Text = "No se está realizando ninguna operación.";
                        break;
                }
            }
            else
            {
                lblInformacion.Text = "No se está realizando ninguna operación.";
            }
        }

        protected void MenuEx1_MenuItemClick(object sender, MenuEventArgs e)
        {
            switch (e.Item.Value)
            {
                case "Inicio":
                    Response.Redirect("~/Default.aspx");
                    return;
                case "Usuario":
                    Response.Redirect("~/Usuario.aspx");
                    return;
                case "Pedido":
                    Response.Redirect("~/DocVenta.aspx");
                    return;
                case "Materiales":
                    Response.Redirect("~/Materiales.aspx");
                    return;
                case "CrearPedido":
                    Response.Redirect("~/DocVenta.aspx");
                    return;
                case "BurcarPedido":
                case "RepPedidos":
                    Response.Redirect("~/BuscaDoc.aspx");
                    return;
                case "BurcarPedido2":
                    Response.Redirect("~/BuscaDocPos.aspx");
                    return;
                case "BurcarPendDesp":
                    Response.Redirect("~/RepPendDesp.aspx");
                    return;
                case "RepServicios":
                case "RepFletes":
                    Response.Redirect("~/RepFletes.aspx");
                    return;
                case "RepOperaciones":
                    Response.Redirect("~/RepOperaciones.aspx");
                    return;
                case "Stock":
                    Response.Redirect("~/Stock.aspx");
                    return;
                case "Reclamo":
                    Response.Redirect("~/MantReclamo.aspx");
                    return;
                case "BuscaReclamos":
                    Response.Redirect("~/BuscaReclamos.aspx");
                    return;
                case "MantReclamo":
                    Response.Redirect("~/MantReclamo.aspx");
                    return;
                case "Salir":
                    //logout
                    Session.RemoveAll();
                    CredencialesController.Usuario = null;
                    Response.Redirect("~/Default.aspx");
                    return;
            }
        }
    }
}
